// IBookManager.aidl
package com.cyh.aidlservice;
import com.cyh.aidlservice.Book;
import com.cyh.aidlservice.IOnNewBookArrivedListener;

/**
 * aidl支持基本数据类型，String，CharSequence,ArrayList, HashMap, Parcelable，和其他aidl类
 *  Parcelable对象和AIDL对象必须显示import进来，不管是否在同一个包名下
 *  用到的Parcelable类，必须有一个同名的aidl的文件
 * 函数参数除了基本类型以及String，CharSequence之外的参数，其他的都要加in、out、inout，基本参数的定向tag默认是并且只能是 in
 * 不支持静态变量
 *sourceSets {//目录指向配置,不会编译aidl文件夹下的文件，服务端和客服端gradle都要这些配置
 main {
 java.srcDirs = ['src/main/java', 'src/main/aidl']
 }
 }


in 为定向 tag 的话表现为服务端将会接收到一个那个对象的完整数据，但是客户端的那个对象不会因为服务端对传参的修改而发生变动；
out 的话表现为服务端将会接收到那个对象的的空对象，但是在服务端对接收到的空对象有任何修改之后客户端将会同步变动；
inout 为定向 tag 的情况下，服务端将会接收到客户端传来对象的完整信息，并且客户端将会同步服务端对该对象的任何变动。


 *
 */
interface IBookManager {
    List<Book> getBookList();
    void addBook(in Book book);
    void notifyBook();
    void registerListener(in IOnNewBookArrivedListener listener);
    void unregisterListener(in IOnNewBookArrivedListener listener);
}
